package com.GB26875_3_2011.model;

import com.GB26875_3_2011.common.CommandType;
import com.GB26875_3_2011.common.DataUnitType;
import lombok.Data;
import lombok.experimental.Accessors;

import java.time.LocalDateTime;
import java.util.List;

/**
 * @author 蒋仕国
 * @projectName GB26875_3_211
 * @ClassName AbstractGB26875Message
 * @date 2025-01-13 08:35
 * @Description: TODO []
 */
@Data
@Accessors(chain = true)
public class GB26875Message {
    // 消息开始前缀 2个字节
    private String startFlagHex;
    // 消息流水号 2 个字节
    private Short flowId;
    // 协议版本号    2个字节
    private String versionHex;
    // 时间标签 6个字节
    private LocalDateTime timeFlag;
    // 源地址Hex 6个字节
    private String sourceAddressHex;
    // 目的地地址hex 6个字节
    private String destinationAddressHex;
    // 应用数据单元长度 2个字节
    private Short bodyLength;
    // 命令字节 1个字节
    private CommandType commandType;
    // 数据单元类型 1个字节【当bodyLength 大于0时】
    private DataUnitType dataUnitType;
    // 数据单元的个数 1字节 【当bodyLength 大于0时】
    private int unitCount;
    // 消息体 0-1024个字节
    private byte[] messageBody;
    // 消息体对象
    private List<GB26875MessageBody> messageBodyObjs;
    // 校验码 1个字节
    private byte checkCode;
    // 后缀hex
    private String endFlagHex;
}
